package ar.unsam.tp.managers

import ar.unsam.tp.programa.Calificacion
import ar.unsam.tp.programa.Jugador
import java.util.ArrayList
import java.util.HashMap
import java.util.List
import ar.unsam.tp.excepciones.JugadorNoJuegaException
import ar.unsam.tp.excepciones.CalificacionNoPendienteException

class ManagerCalificaciones {
	public List<Calificacion> calificacionesPendientes = new ArrayList<Calificacion>
	public List<Calificacion> calificacionesRechazadas = new ArrayList<Calificacion>
	public HashMap<Calificacion, Jugador> jugadoresCalificados = new HashMap<Calificacion, Jugador>();

	def void agregarCalificacion(Jugador jugadorCalificado, Calificacion calificacion, boolean juegaSeguro) {
		if(!juegaSeguro)
			throw new JugadorNoJuegaException("El jugador no participo del partido, no se puede calificar")
			
		calificacionesPendientes.add(calificacion)
		jugadoresCalificados.put(calificacion, jugadorCalificado)
	}

	def void aceptarCalificacion(Calificacion calificacion) {
		if(!calificacionesPendientes.contains(calificacion))
			throw new CalificacionNoPendienteException("Calificacion no encontrada en la lista de pendientes")
			
		jugadoresCalificados.get(calificacion).calificaciones.add(calificacion)
		calificacionesPendientes.remove(calificacion)
	}

	def void rechazarCalificacion(Calificacion calificacion) {
		if(!calificacionesPendientes.contains(calificacion))
			throw new CalificacionNoPendienteException("Calificacion no encontrada en la lista de pendientes")
		
		calificacionesRechazadas.add(calificacion)
		calificacionesPendientes.remove(calificacion)
	}
}
